コマンドプロンプトで取得した文字列や変数内の行末にある空白を削除する方法
目次
コマンドで取得した値を変数に入れたとき、行末に半角スペースがありました。それを削除する方法をメモ。
変数の値の行末に2個の半角スペースが
コマンドでPCのベンダー名(製造者)を変数に入れ、IF文で判別して分岐処理するバッチファイル作ることがありました。そのとき、変数内の値の行末に半角スペースが入っていたので、それを消すためにやったことを例にメモしています。
PCのベンダー名(メーカー名)を取得してみる
例えば以下のコマンドでPCの製造メーカー(ベンダー名)を表示できます。
wmic csproduct get Vender
コマンド実行結果
PCが自作パソコンなので、「To Be Filled By O.E.M.」と表示されました。これが例えば富士通製のPCだと「FUJITSU」と表示されます。
結果を変数に入れて表示してみる
この値を変数に入れて表示するバッチファイルを実行してみます。
@echo off for /f "tokens=2 usebackq delims=^:" %%i in (`wmic csproduct get Vendor ^| findstr /n /r "." ^| findstr /r "^2:"`) DO @set Get_Vendor=%%i echo. echo ベンダー名は%Get_Vendor%です。 echo. pause
「To Be Filled By O.E.M.」後ろに2個の半角スペースがある
行末のスペースを削除する処理を加えたバッチファイル例
PHPとか他のスクリプト言語ならTRIMやREPLACEなど文字列の置換を行う関数があったりしますが、コマンドプロンプトにはありません。
どういう仕組みなのかわかりませんが、以下の2つを追記して行末のスペースを処理します。
call :Trim %Get_Vendor%
:Trim set Get_Vendor=%*
これで行末の半角スペースを消すことができます。
@echo off
for /f "tokens=2 usebackq delims=^:" %%i in (`wmic csproduct get Vendor ^| findstr /n /r "." ^| findstr /r "^2:"`) DO @set Get_Vendor=%%i
call :Trim %Get_Vendor%
echo. echo ベンダー名は%Get_Vendor%です。 echo.
pause
:Trim set Get_Vendor=%*
行末のスペースが消えました
無事、行末のスペースを削除することができました。
参考サイト
- http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/cat54/4-1557.html
- http://itdiary.info/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88/post-754/